#include "pch.h"

#include "math/vector2.h"



namespace Math
{

	//////////////////////////////////////////////////////////////////////////
	vector2::vector2():
float2(0,0)
{

}


//////////////////////////////////////////////////////////////////////////
vector2::vector2(scalar x, scalar y):
float2(x,y)
{

}


//////////////////////////////////////////////////////////////////////////
vector2::vector2(const vector2 & rhs):
float2(rhs.m_x, rhs.m_y)
{

}


//////////////////////////////////////////////////////////////////////////
vector2::vector2(const float2 & rhs):
float2(rhs)
{

}



//////////////////////////////////////////////////////////////////////////
void vector2::operator =(const vector2 & rhs)
{
	this->m_x = rhs.m_x;
	this->m_y = rhs.m_y;
}


//////////////////////////////////////////////////////////////////////////
bool vector2::operator ==(const vector2 & rhs) const
{
	return ((this->m_x == rhs.m_x) && (this->m_y == rhs.m_y));
}


//////////////////////////////////////////////////////////////////////////
bool vector2::operator !=(const vector2 & rhs) const 
{
	return ((this->m_x != rhs.m_x) || (this->m_y != rhs.m_y));
}


//////////////////////////////////////////////////////////////////////////
void vector2::operator *=(scalar s)
{
	this->m_x *= s;
	this->m_y *= s;
}


//////////////////////////////////////////////////////////////////////////
void vector2::operator +=(const vector2 & rhs)
{
	this->m_x += rhs.m_x;
	this->m_y += rhs.m_y;
}


//////////////////////////////////////////////////////////////////////////
void vector2::operator -=(const vector2 & rhs)
{
	this->m_x -= rhs.m_x;
	this->m_y -= rhs.m_y;
}


//////////////////////////////////////////////////////////////////////////
vector2 vector2::operator *(scalar s) const
{
	return vector2(this->m_x * s, this->m_y * s);
}


//////////////////////////////////////////////////////////////////////////
vector2 vector2::operator +(const vector2 & rhs) const 
{
	return vector2(this->m_x + rhs.m_x, this->m_y + rhs.m_y);
}


//////////////////////////////////////////////////////////////////////////
vector2 vector2::operator -(const vector2 & rhs) const 
{
	return vector2(this->m_x - rhs.m_x, this->m_y - rhs.m_y);
}


//////////////////////////////////////////////////////////////////////////
vector2 vector2::operator -() const 
{
	return vector2(-this->m_x, -this->m_y);
}




//////////////////////////////////////////////////////////////////////////
void vector2::set(scalar x, scalar y)
{
	this->m_x = x;
	this->m_y = y;
}





//////////////////////////////////////////////////////////////////////////
vector2 vector2::nullvec()
{
	return vector2(0.0f, 0.0f);
}


//////////////////////////////////////////////////////////////////////////
vector2 vector2::upvec()
{
	return vector2(0.0f, 1.0f);
}

}